package com.project.sianet.entidades;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;

@JsonIgnoreProperties(ignoreUnknown=true)
public class Usuario implements Parcelable {

	public String login;
	public String contrasenia;
	public String nombres;
	public String apePaterno;
	public String apeMaterno;
	public String regId;
	public int tipoUsuario;
	public Boolean puedeIngresar;

    public Usuario() {
    	// TODO Auto-generated constructor stub
	}
    
    public Usuario(String login, String contrasenia, String nombres, String apePaterno, String apeMaterno) {
    	this.login = login;
    	this.contrasenia = contrasenia;
    	this.nombres = nombres;
    	this.apePaterno = apePaterno;
    	this.apeMaterno = apeMaterno;
    	this.puedeIngresar = false;
	}
    
    public Usuario(String login, String contrasenia, String nombres, String apePaterno, String apeMaterno, Boolean puedeIngresar, int tipoUsuario, String regId) {
    	this.login = login;
    	this.contrasenia = contrasenia;
    	this.nombres = nombres;
    	this.apePaterno = apePaterno;
    	this.apeMaterno = apeMaterno;
    	this.puedeIngresar = puedeIngresar;
    	this.tipoUsuario = tipoUsuario;
    	this.regId = regId;
	}
    
    @JsonProperty("Perfil")
    public int getTipoUsuario() {
		return tipoUsuario;
	}

    @JsonProperty("Perfil")
	public void setTipoUsuario(int tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}
    
    @JsonProperty("CodigoRegMovil")
    public String getRegId() {
		return regId;
	}

    @JsonProperty("CodigoRegMovil")
	public void setRegId(String regId) {
		this.regId = regId;
	}

    @JsonProperty("Password")
	public String getContrasenia() {
		return contrasenia;
	}

    @JsonProperty("Password")
	public void setContrasenia(String contrasenia) {
		this.contrasenia = contrasenia;
	}

	@JsonProperty("Login")
	public String getLogin() {
		return login;
	}

	@JsonProperty("Login")
	public void setLogin(String login) {
		this.login = login;
	}

	@JsonProperty("Nombres")
	public String getNombres() {
		return nombres;
	}
	
	public String getNombreCompleto() {
		
		StringBuilder nc = new StringBuilder();
		
		nc.append(this.apePaterno);
		
		if (!TextUtils.isEmpty(this.apeMaterno)) {
			nc.append(" ");
			nc.append(this.apeMaterno);
		}
		
		if (!TextUtils.isEmpty(this.nombres)) {
			if (nc.length() > 0)
				nc.append(", ");
			nc.append(this.nombres);
		}
		
		return nc.toString();
		
	}
	
	public String getApellidos() {
		
		StringBuilder nc = new StringBuilder();
		
		nc.append(this.apePaterno);
		
		if (!TextUtils.isEmpty(this.apeMaterno)) {
			nc.append(" ");
			nc.append(this.apeMaterno);
		}
		
		return nc.toString();
		
	}

	@JsonProperty("Nombres")
	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	@JsonProperty("ApellidoPaterno")
	public String getApePaterno() {
		return apePaterno;
	}

	@JsonProperty("ApellidoPaterno")
	public void setApePaterno(String apePaterno) {
		this.apePaterno = apePaterno;
	}

	@JsonProperty("AccesoPermitido")
	public Boolean getPuedeIngresar() {
		return puedeIngresar;
	}

	@JsonProperty("AccesoPermitido")
	public void setPuedeIngresar(Boolean puedeIngresar) {
		this.puedeIngresar = puedeIngresar;
	}

	@JsonProperty("ApellidoMaterno")
	public String getApeMaterno() {
		return apeMaterno;
	}

	@JsonProperty("ApellidoMaterno")
	public void setApeMaterno(String apeMaterno) {
		this.apeMaterno = apeMaterno;
	}

	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel out, int flags) {
		out.writeString(login);
		out.writeString(contrasenia);
		out.writeString(nombres);
		out.writeString(apePaterno);
		out.writeString(apeMaterno);
		out.writeString(regId);
		out.writeInt(tipoUsuario);
		out.writeByte((byte)(puedeIngresar ? 1 : 0));
	}
	
	protected Usuario(Parcel in) {
		login = in.readString();
		contrasenia = in.readString();
		nombres = in.readString();
		apePaterno = in.readString();
		apeMaterno = in.readString();
		regId = in.readString();
		tipoUsuario = in.readInt();
		puedeIngresar = in.readByte() != 0;
	}
	
}
